<?php

/**
 * Utility class.  
 *
 * @package 	Joomla
 * @subpackage	maszyny
 * @since	1.0
 */
class msFileScan extends JObject
{

	/**
	 * Metoda zapisuje na serwerze skan wysłany z formularza 
	 *
	 * @access 	public
	 * @param 	int 	$post 		Tablica $_POST otrzymana z formularza.
	 * @param 	int 	$nameTabSQL 	Nazwa tablicy SQL w której znajdują się pola "file_path" i "file_name"
	 * @param 	int 	$nameDir 	Nazwa katalogu serwera do którego zapisujemy skany
	 * @return 	boolean True on success 
	 * @since 	1.0
	 */	
	function saveFile (&$post, $nameTabSQL , $nameDir)
	{
		global $mainframe;
		
		if ($_FILES['plik']['error'] > 0 )
		{
			switch ($_FILES['plik']['error'])
			{
				case 1: $mainframe->enqueueMessage('Rozmiar pliku przekroczył wartość upload_max_filesize'); break;
				case 2: $mainframe->enqueueMessage('Rozmiar pliku przekroczył wartość max_file_size'); break;
				case 3: $mainframe->enqueueMessage('Plik wysłany tylko częciowo'); break;
				case 4: break; // Nie wysłano żadnego pliku - nic nie robimy!			
			}
			return false;
		}
		
		// Otrzymany plik
		$filename=$_FILES['plik']['name'];    // Nazwa wysłanego pliku
		$filetype=$_FILES['plik']['type'];    // Typ wysłanego pliku
		$filesize=$_FILES['plik']['size'];    // Rozmiar wysyłanego pliku
		$filesrc=$_FILES['plik']['tmp_name']; // Ścieżka do pliku tymczasowego na serwerze
	
		$db =& JFactory::getDBO();  
		
		// Ustalenie maksymalnego id tabeli SQL
		$query = 'SELECT max(id) FROM '.$nameTabSQL;       
		$db->setQuery( $query );
		$id = (int) $db->loadResult() + 1;
		
		// Ustalenie katalogu dla skanów
		$lokalizacja = 'obrazy/'.$nameDir;
		if (!is_dir($lokalizacja) )  
		{
			$mainframe->enqueueMessage('Katalog '.$nameDir.' nie istnieje.'); 
			return false;
		}	
		
		// Czyścimy nazwę pliku z polskich znaków
		$filename = msFileScan::remove_pl($filename);
		// Dzielimy plik na nazwe i rozszerzenie
		$a = explode('.', $filename);
		// Dodanie nr id do nazwy pliku - dzięki temu nazwy bedą jednoznaczne
		$lokalizacja .= '/'.$a[0].'_'.$id.'.'.$a[1];
	
		// Przesuniecie pliku do żądanej lokalizacji na serwerze
		if (!move_uploaded_file($filesrc, $lokalizacja))
		{
			$mainframe->enqueueMessage('Plik nie może być skopiowany do katalogu');
			return false;
		}
		// Zapis do tablicy SQL nazwy i scieżki do pliku
		$post['file_name'] = $filename;
		$post['file_path'] = JURI::base().$lokalizacja;
		
		return true;
	}
	
	
	/**
	* Metoda zastępuje polskie znaki diakrytyczne na ich odpowiedniki bez ogonków.
	*
	* @param	string	$text  Tekst wejściowy
	* @return 	string 	       Tekst wyjściowy
	*/
	function remove_pl ($sText)
	{
		  $aSzukaj = array('ć','Ć','ś','Ś','ą','Ą','ż','Ż','ó','Ó','ł','Ł','ś','Ś','ź','Ź','ń','Ń','ę','Ę');
		  $aZamien = array('c','C','s','S','a','A','z','Z','o','O','l','L','s','S','z','Z','n','N','e','E');
		  // Znaki dozwolone w stringu
		  $sOK  = 'abcdefghijklmnopqrstuvwxyz';
		  $sOK .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
		  $sOK .= '1234567890';
		  $sOK .= '.';
	 
		  $sText = str_replace($aSzukaj, $aZamien, $sText);
		  $sTextN = '';
	 
		  for ( $i = 0; $i < strlen($sText); $i++ )
		  {
		       if ( strpos($sOK,$sText[$i]) === false )
			    $sTextN .= '_';
		       else
			    $sTextN .= $sText[$i];
		  }
	 
		  return $sTextN;
	}
}
?>



